﻿/*
SINACOR - BMF&Bovespa
Arquivo: GrupoAssessoresStatusCliente.cs
Criado em: 14-mai-2010 17:57:08
Arquiteto Responsável: p-dmartinelli
*/
using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.Common.Validation;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Validation;
using Sinacor.Infra.Service.Validation.BusinessRules;
using Sinacor.Servico.Bovespa.Alocacao.BusinessEntity;


namespace Sinacor.Servico.Bovespa.Alocacao.BusinessLogic.BusinessRuleValidation 
{
	public class GrupoAssessoresStatusCliente : BaseBusinessRuleValidation<NegocioAlocadoDireto>, IBusinessRuleValidation 
	{
		#region Atributos
        private int _clienteInvalido = 109344;
		private int _clienteInvalidoStatus = 520001;
		private int _erroObjetoNulo = 314816;
		#endregion
		#region Propriedades
        public int ClienteInvalido
        {
            get { return _clienteInvalido; }
            set { _clienteInvalido = value; }
        }

		public int ClienteInvalidoStatus
		{
			get { return _clienteInvalidoStatus; }
			set { _clienteInvalidoStatus = value; }
		}

		public int ErroObjetoNulo
		{
			get { return _erroObjetoNulo; }
			set { _erroObjetoNulo = value; }
		}
		#endregion
		#region Métodos
		public List<ValidationError> GetErrors()
		{
            return base.ErrorsList;
		}

		public void Validate()
		{
            if (base.EntityToValidate != null)
            {
                if (EntityToValidate.DadosAlocacao.Cliente.HasValue)
                {
                    Cliente.BusinessEntity.Parameter.FiltroCliente filtroCliente = new Cliente.BusinessEntity.Parameter.FiltroCliente();
                    filtroCliente.Codigo = EntityToValidate.DadosAlocacao.Cliente;

                    Cliente.BusinessLogic.Cliente bl = new Cliente.BusinessLogic.Cliente();
                    Cliente.BusinessEntity.Cliente cliente = bl.ObterCliente(filtroCliente);

                    if (cliente == null)
                        base.AddValidationError(ClienteInvalidoStatus);
                    else if (cliente.Situacao != Cliente.BusinessEntity.Enum.TipoSituacao.Ativo)
                        base.AddValidationError(ClienteInvalidoStatus);
                }
                else
                    base.AddValidationError(ClienteInvalido);
            }
            else
                base.AddValidationError(ErroObjetoNulo);

		}
		#endregion
	}

}